﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Contract.Business.Process;
using Contract.Business.Filter;
using Contract.Business.Entity;

namespace Fast.Presentation.WinForms.Relatórios
{
    public partial class FrmRptFechamentoCaixa : Form
    {
        public FrmRptFechamentoCaixa()
        {
            InitializeComponent();
        }

        private void FrmRptFechamentoCaixa_Load(object sender, EventArgs e)
        {
            try
            {
                BPVenda vendaProcess = new BPVenda();

                FEVenda filtro = new FEVenda();
                filtro.DataVendaMin = DateTime.Today;
                filtro.DataVendaMax = DateTime.Today;

                List<BEVenda> vendas = vendaProcess.ObterTodos(filtro);
                if (vendas == null || vendas.Count == 0)
                {
                    Utilidades.ExibirMensagem("Nenhuma venda encontrada.");
                    this.Close();
                }
                else
                {
                    List<BEPagamento> pagamentos = new List<BEPagamento>();
                    foreach (BEVenda venda in vendas)
                    {
                        BEPagamento pag = venda.Pagamentos[0];
                        pag.Valor -= venda.ValorTroco;
                    }

                    vendas.ForEach(q => pagamentos.AddRange(q.Pagamentos));

                    dsFechamentoCaixaRpt source = new dsFechamentoCaixaRpt();

                    foreach (BEPagamento item in pagamentos)
                    {
                        DataRow row = source.Tables[0].NewRow();
                        row["Codigo"] = item.CodigoTipoPagamento;
                        row["Descricao"] = item.TipoPagamento.Descricao;
                        row["Valor"] = item.Valor;

                        source.Tables[0].Rows.Add(row);
                    }

                    if (rptFechamentoCaixa1 == null)
                        rptFechamentoCaixa1 = new rptFechamentoCaixa();

                    rptFechamentoCaixa1.SetDataSource(source);
                    rptFechamentoCaixa1.Refresh();

                    crystalReportViewer1.ReportSource = rptFechamentoCaixa1;
                }
            }
            catch (Exception ex)
            {
                Utilidades.LogarError(ex);
                this.Close();
            }
        }
    }
}
